#include <string>
#include "Imagem.h"

/*
	Classe imagem, subtipo de midia, corresponde as imagens que serao inseridas no documento.
*/

/*
Construtor default da classe.
*/
Imagem::Imagem(){
	aspectRatio = 4.0/3.0;
	areaProportion = 1;
	areaImagem = 0;
}

void Imagem::setAspectRatio(double aspect) {
    this->aspectRatio = aspect;
}

/*
	Destrutor da classe.
*/
Imagem::~Imagem(){	
}

/*
	Construtor da classe que recebe o path da imagem como parametro.
*/
Imagem::Imagem(string pathImg){
	aspectRatio = 4.0/3.0;
	areaProportion = 1;
	pathImage  = pathImg;
	areaImagem = 0;
}

/*
	Procedimento usado para atualizar/configurar o caminho da imagem corrente.
*/
void Imagem::setPahtImage(string pathImg){
	pathImage = pathImg;
}

/*
	Retorna o caminho (path) da imagem corrente.
*/
string Imagem::getPath(){
	return pathImage;
}

/*
	Procedimento usado para atualizar a HPDF_Image da imagem corrente.
*/
void Imagem::setHpdfImage(HPDF_Image im){
	image = im;
}

/*
	Retorna a HPDF_Image (imagem da biblioteca libHaru) da imagem corrente.
*/
HPDF_Image Imagem::getHpdfImage(){
	return image;
}

/*
	Funcao que retorna o valor do aspect ratio da imagem corrente.
*/
double Imagem::getAspectRatio(){
	return double(HPDF_Image_GetWidth(image))/double(HPDF_Image_GetHeight(image));
}

/*
	Funcao que retorna o valor da area proportion da imagem corrente.
*/
double Imagem::getAreaProportion(){
	return areaProportion;
}

/*
	Procedimento usado para atualizar o valor da area proportion da imagem corrente.
*/
void Imagem::setAreaProportion(double ap){
	areaProportion = ap;
}

/*
	Funcao usada para retornar o valor correspondente a area da imagem corrente.
*/
double Imagem::getArea(){
	return areaImagem;
}

/*
	Procedimento usado para atualizar o valor da area da imagem corrente.
*/
void  Imagem::setArea(double ar){
	areaImagem = ar;
}

/*
	Funcao usada para informar o nome da imagem corrente. Caso seja utilizado no Linux, modificar o valor da string usada para encontrar o fim da arvore de diretorios, no Windows usa-se \\, no Linux deve-se usar /.
*/
string Imagem::getName(){
	string name = pathImage.substr(pathImage.find_last_of("\\")+1, pathImage.length());
	return name;
}

void Imagem::setId(int id) {
    this->id = id;
}

int Imagem::getId() {
    return id;
}